/*
 * support.cpp
 *
 *  Created on: 29/04/2012
 *      Author: adriia
 */

#include <list>
#include "support.h"
#include <set>
#include <sstream>

using namespace std;

list<char> paraulaAmagada;
set<char> lletresJaDites;

int nVides;


void comencaElJoc( void ){

	unsigned int i;
	string paraula;
	char prova;
	stringstream ss;

	nVides = 10;
	inicialitzaModul();
	paraula = donamParaula();

	for(i = 0; i <  paraula.length(); i++){
		ss << paraula[i];
		ss >> prova;
		paraulaAmagada.push_back(prova);
	}
}

bool jugadorDiuLletra( char lletra ){

	list<char>::iterator it;
	bool trobat;

	lletresJaDites.insert(lletra);
	it = paraulaAmagada.begin();
	trobat = false;

	while( !( it == paraulaAmagada.end() || trobat) ){
		trobat = (*it == lletra );
		it++;
	}

	if(!trobat){
		nVides--;
	}

	return trobat;
}

int consultaVides( void ){

	return nVides;
}

bool haGuanyat( void ){

	list<char>::iterator it;
	bool quedenVides;

	it = paraulaAmagada.begin();
	quedenVides = (nVides != 0);

	while(it != paraulaAmagada.end() && lletresJaDites.find(*it) != lletresJaDites.end() && quedenVides ){

		it++;
	}

	return (it == paraulaAmagada.end());
}

list<char> donamGuionets( void ){
	list<char>::iterator it;
	list<char> guionets;
	bool trobada;

	for(it = paraulaAmagada.begin(); it != paraulaAmagada.end(); it++){

		trobada = (lletresJaDites.find(*it) != lletresJaDites.end());
		if(trobada){
			guionets.push_back(*it);
		}else{
			guionets.push_back('_');
		}

	}
	return guionets;
}



